/**
    算法描述：
    核心问题：
    解决所需数据结构+算法：
**/
#include<iostream>
#include<cstring>
#include<set>
#include<iterator>
using namespace std;

int n, k, a[22], ans = 0;

bool isPrime(int x) {
    for(int i=2; i*i<=x; i++)   if(x % i == 0)  return false;
    return true;
}
/*
变量说明：
    x：     第x个数字
    sum：   前面数字的综合
    pre：   上一个数字在a数组中的位置
*/
void dfs(int x, int sum, int pre) {
    if(x == k) {
        if(isPrime(sum))    ans++;
        return ;
    }
    for(int i=pre; i<n; i++)
        dfs(x+1, sum+a[i], i+1);
}

int main() {
    memset(a, 0, sizeof(a));
    cin >> n >> k;
    for(int i=0; i<n; i++)  cin >> a[i];
    dfs(0, 0, 0);
    cout << ans << endl;
    return 0;
}